Data processing done by the use of a computer comes into wide use these days, and storage technologies for storing and using data become more and more important. In this aspect, technology called RAID (Redundant Arrays of Independent Disks) has been usually used as a storage technology for accelerating data access and achieving higher reliability of data storage. According to RAID, data is divided and copied as necessary, and is distributed over and put in a plurality of disk devices. Thus, load is distributed among the plural disks so that data access may be accelerated, and data is rendered redundant so that higher reliability may be achieved.
Incidentally, a recent trend is to build a virtual storage system which provides a user with a combination of plural memory areas each built through RAID. The virtual storage system has a plurality of storage devices connected to one another through a network and a virtual switch device. The virtual switch device combines memory areas in the plural storage devices so as to build a logical memory area to be provided. A user may easily manage data by using the memory area without being conscious of the storage devices serving under the virtual switch device.
Data is copied in the virtual storage system mentioned here, e.g., for making a backup. If a user tries to copy large-sized data at once, arithmetic operation resources are occupied by the copy process for a long time, resulting in that another process such as host I/O (Input/Output) waits to be run for a longer period of time. Thus, it is conceivable to copy the data to be copied on a block-by-block basis of a specific size. Upon copying the data on the block-by-block basis while changing over to another process, the copy process and another process may be run apparently in parallel.
Japanese Laid-open Patent Publications No. 2000-259467 and 2007-094994 are examples of related art.
Even if data is copied on a block-by-block basis into which the data is divided (a process for copying an individual block is called a block copy, hereafter), however, a period of time for which another process waits to be run is extended if a certain block copy needs a long time. Thus, a longest period of time allowed for one block copy is specified (timeout) in general. If a timeout occurs in a certain block copy, the block copy is interrupted and another process scheduled next may be started.
Meanwhile, the block copy interrupted by the timeout remains incomplete. Thus, the same block needs a retry. In that case, if the target storage device continuously remains in a heavily loaded state when the retry is done, another timeout may possibly occur again. Then, still another retry may possibly be needed in a vicious circle.